﻿using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using ModelLayer;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using AssessmentTool.Services.DTO;
namespace AssessmentTool.PresentationLogic.Controllers
{
    public class RadioChooseController:AbstractController<RadioChoose>
    {
        private Utente utente;
        private Risposta risposta;
        private ModelLayer.Competenza competenza;
        private List<AnagraficaPesi> pesiDetached;
        private List<AnagraficaPesi> pesi;
        private IContainer guiController;
        

        public RadioChooseController(RadioChoose radio)
            : base(radio)
        { 
            
        }

        public int getIndice(String nome)
        {
            AnagraficaPesi peso = pesi.Where(x => x.AnagraficaRisposta.Nome.CompareTo(nome) == 0).First();
            return pesi.IndexOf(peso);
        }

        public void risponde(String nome)
        {
            AnagraficaPesi peso = pesi.Where(x => x.AnagraficaRisposta.Nome.CompareTo(nome) == 0).First();
            AnagraficaPesi pesoTemp = pesiDetached.Where(x => x.Id == peso.Id).First();
            if (risposta == null)
            {
                risposta=UtenteTrackingHelper.getNuovaRisposta(utente, competenza);
                guiController.addProgress();
            }
            else
            {
                
                UtenteTrackingHelper.associaUtenteRisposta(utente, risposta);
            }
            risposta.AnagraficaPesi = pesoTemp;
            element.cambioColore(pesi.IndexOf(peso), nome, true);
            ed.dispatch("ASSESSMENTMODIFICATO", null);
        }



        public void initWithCompetenza(ModelLayer.Competenza comp,IContainer guiController)
        {
            utente =(Utente) Session.getInstance().getValue("USER");
            this.competenza = comp;
            this.guiController = guiController;
            pesi=comp.AnagraficaPesi.OrderBy(x => x.Id).ToList();
            AnagraficaPesi anag= pesi.Where(x => x.Risposta.Count > 0).FirstOrDefault();
            pesiDetached = UtenteTrackingHelper.detachedAnagraficaPesi(pesi);
            if (anag != null)
            {
                risposta =anag.Risposta.First();
                risposta = UtenteTrackingHelper.detachedRisposta(risposta, utente, pesiDetached.Where(x => x.Id == anag.Id).First());
                element.cambioColore(pesi.IndexOf(anag), anag.AnagraficaRisposta.Nome, false);
                guiController.addProgress();
                
            }
            else
            {
                risposta = null;
            }
            guiController.addMaximumProgress();
            UtenteLogged ul =(UtenteLogged) Session.getInstance().getValue("USERLOGGED");
            guiController.enableRisposta(ul.grantModificaModello);

        }

    }
}
